<%@ Page Language="C#" MasterPageFile="~/MasterPages/Learning.Master" AutoEventWireup="true" CodeBehind="DevelopmentMethodology.aspx.cs" Inherits="Mindscape.BackgroundMotion.Website.Learn.DevelopmentMethodology" Title="Code: Learn about our Development Methodology" %>
<asp:Content ID="Content3" ContentPlaceHolderID="BodyContent" runat="server">

    <br />
    <div align="center">
        <a href="/Learn/PlayVideo.aspx?v=Nugget4" target="page" onClick="window.open('','page','toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=450,height=350,titlebar=yes')"><img border="0" src="/Images/Dev/VideoNugget4.jpg" /></a><br />
        <p>John-Daniel explains the approach taken when developing BackgroundMotion</p>    
    </div>
    <br />
    
    <h2>The BackgroundMotion development period</h2>
    
    <p>With BackgroundMotion we had a very tight development timeframe - roughly 3 weeks. Building an entire social media site, end to end is always going to be a bit of a mission but 3 weeks was going to be a real push. Due to this we used an Agile approach where we had tight iterations with milestones per iteration. Our iteration time was half a week which was tight enough to give 6 iterations but also long enough that we could get a reasonable amount of work done. We also maintained a backlog of features and used whiteboards around the team so everybody was aware of where we were at. To ensure we knew how we were progressing we had a stand up meeting every morning just to cover what we had achieved and what we were going to achieve for the day.</p>
    
    <h2>Continuous integration (CI)</h2>
    
    <p>One important aspect of team development is ensuring that every team members code works with the latest code. Given the speed at which we needed to develop BackgroundMotion we needed to be quickly informed if our code did not integrate properly with somebody else's code in the team. We use CI as a way of ensuring that our code quality is high and we are not hindered by not realising bugs are being re-introduced. Our CI server of choice was CruiseControl.NET and we leveraged MSBuild to run other tasks such as automating our unit tests so we could run tests automatically when checking in code, this also helped avoid the "works on my machine" syndrome where you complete a project thinking it's fine only to find it fails as soon as it is deployed onto another machine.</p>
    
        
    <h2>Where can I find more information?</h2>
    
    <ul>
      <li><a href="http://www.martinfowler.com/articles/newMethodology.html">Martin Fowler on Agile development methodologies</a></li>
      <li><a href="http://www.martinfowler.com/articles/newMethodology.html">MSBuild reference</a></li>
      <li><a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CruiseControl.NET homepage</a></li>
    </ul>

</asp:Content>
